home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
netz
/
verteiler
/
zpoint
/
start_verteiler_08.zprx
next >
Wrap
Text File
|
1995-05-29
|
11KB
|
305 lines
/*
$VER: Start_Verteiler.zprx V0.8 (15-May-95) Copyright (c) Nils Görs
Verteiler Copyright (c) 1995 by Thomas Eicher
[Diese Version hat nur eingeschraenkte Funktionalitaet, aber arbeitet
auch mit ZPoint Version kleiner als beta 37.191
This Version does not have full functionality, but at least it works
with ZPoint versions before beta 37.191 --Tom]
FUNKTIONSBESCHREIBUNG:
Dieses Skript wurde speziell für das Programm VerteilerVerwaltung,
kurz VV, zwecks Anbindung an Zodiac's Point entwickelt. Dieses
Skript dient lediglich der Auswertung- und Versendung von
Nachrichten an mehrere Empfänger, die mittels `VV' ausgewählt
wurden.
BENUTZUNG:
Schreiben und versenden Sie Ihre Nachrichten wie bisher. Tragen
Sie aber anstelle aller Empfänger, an die Sie diese Nachricht
senden möchten, lediglich einen ein. Begeben Sie sich dann in das
Spool-Brett, wählen dort die entsprechende Nachricht aus und
starten Sie dieses ARexx-Skript.
Es wird das Programm `VV' gestartet, wo Sie ganz bequem Ihre
Verteilerlisten, erstellen, editieren, löschen und zum versenden
von Nachrichten bereitstellen können.
Start_Verteiler.zprx wertet dann zum einen die Orignalnachricht
aus, zum anderen generiert das Skript eine neue Nachricht. Diese
neue Nachricht weist natürlich die selben Attribute vor wie die
Originalnachricht. Zusätzlich werden dann zu der Nachricht, die
verschiedenen Empfänger beigefügt.
INSTALLATION:
Kopieren Sie bitte das Hauptprogramm, 'VV' in das
Tools-Verzeichnis von Zodiac's Point. Dieses ARexx-Skript gehört
in das Rexx-Verzeichnis von Zodiac's Point.
Um das Programm nun über eine Funktionstaste starten zu können
müssen Sie folgenden Eintrag in die `fkeys.zp' hinzufügen.
F1:SYS:Rexxc/RX ZPOINT:Rexx/Start_Verteiler.zprx %s
Alternativ hierzu haben Sie aber auch die Möglichkeit das Programm
aus dem Pulldown-Menu aufzurufen. Dazu müssen Sie lediglich einen
neuen Eintrag in der Datei `usermenus.zp' machen:
*Nachrichtenverteiler
Sys:Rexxc/RX ZPoint:Rexx/Start_Verteiler.zprx %s
Sie erreichen die Autoren wie folgt:
t.eicher@hsp.zer.de
N.Goers@Art-Line.Art-Line.de
Das Programm Verteiler, welches mit diesem Skript gestartet wird,
benötigt die "triton.library" >=V1.2
Triton is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de> */
/*----------------------------------------------------------------
-Ab hier können Sie das Skript nach Ihren Bedürfnissen anpassen-
----------------------------------------------------------------*/
/* wo befindet sich das Hauptprogramm ?? */
Verteiler.main = "zpoint:tools/verteiler"
/*----------------------------------------------------------------*/
/* wo befindet sich die Database (default s:verteiler.database) */
DataBase = "progdir:Verteiler.database"
/*----------------------------------------------------------------*/
/* wo ist die Datei mit den Empfängern (Verteilerliste)? */
RCVFILE.main = "t:RCVFILE"
/*----------------------------------------------------------------*/
/* zum Auslagern evtl. Daten (Binär- und oder Textnachrichten) */
Datei.Tmp = "t:Out.tmp"
/*----------------------------------------------------------------*/
/* Erlaubte Optionen:
PERSONAL unterbindet, daß im Kopf der Nachricht vermerkt wird, wer
alles Kopien dieser Nachricht erhalten hat.
ARCHIVE Nachricht versenden und im Nachrichtenarchiv speichern.
COOKIE Cookie anhängen (nur bei Textnachrichten).
Beispiele:
wopts = 'PERSONAL '
~Bitte beachten Sie dieses Freizeichen!
wopts = 'COOKIE ARCHIVE '
*/
wopts = ''
/*----------------------------------------------------------------*/
/* Originalnachricht wird gelöschen ??
1 = mit Sicherheitsabfrage
0 = ohne Sicherheitsabfrage */
DelImmer = 0
/*----------------------------------------------------------------*/
/* In welcher Sprache möchten Sie arbeiten ??
Möglichkeiten: deutsch
english */
Sprache = "deutsch"
/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Bitte geben Sie hier ihre Präferenzen ein ! *
*******************************************************************/
/*******************************************************************
* Bitte unterhalb dieser Zeile nichts mehr verändern! *
*******************************************************************/
NL = '0a'x
Diskussion = "Diskussion-in:"
Empfangsbest = "EB:"
PGPSignatur = "PGP-SIG:"
HeaderEnd = "LEN:"
Anf = '"'
Space = ' '
/* Hier sind die Texte in den unterschiedlichen Sprachen. Falls
Sie diese Texte in eine andere Sprache übersetzen sollten, dann
senden Sie mir die übersetzten Texte doch bitte zu. */
deutsch.text0 = '"Verteiler läuft!"'
english.text0 = '"Verteiler is running!"'
deutsch.text1 = "Bitte begeben Sie sich"NL,
"in das Spool-Brett!"
english.text1 = "Please go into the Spool-Area"
deutsch.text2 = "Empfangsbestätigungen und Kontrollnachrichten"NL,
"können nicht bearbeitet werden!"
english.text2 = "receive receptions and controlmessages"NL,
"can not be handled!"
deutsch.text3 = "Fehler beim Start von Verteiler!"
english.text3 = "error while opening 'Verteiler!'"
deutsch.text4 = "Sie haben abgebrochen. Die Nachricht wird"NL,
"weiterhin nur an den Originalempfänger gesendet."
english.text4 = "You have canceled. The message will"NL,
"be send to the main receiver, only."
deutsch.text5 = "Fehler beim Speichern!"
english.text5 = "error while saving!"
deutsch.text6 = "Kann Nachricht nicht verschicken!"
english.text6 = "Couln't send message!"
deutsch.text7 = "Nachricht wurde verschickt."
english.text7 = "Message is on the way, now."
deutsch.text8 = "Soll die Ursprungsnachricht gelöscht werden?"
english.text8 = "Shall I delete the original message?"
OPTIONS RESULTS
/* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
PARSE ARG zpPort
IF zpPort == "" THEN
zpPort = "ZPoint"
ADDRESS VALUE zpPort
/* Dieses Skript darf nur im Spool-Brett ausgeführt werden */
WHICHLEVEL
IF Result ~= "BOARD" then
DO
Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
END
BOARDINFO LABEL; BOARDLABEL=Result
IF INDEX(Boardlabel,'(Spool') == 0 THEN
DO
Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
END
/******************************
* hier ist das Hauptprogramm *
******************************/
_Main:
MESSAGEINFO STATUS
IF RESULT == "CTL,EB" THEN DO /* Kontrollnachricht! */
Text1 = VALUE(sprache||.text2); REQUESTNOTIFY Text1; EXIT
END
text1 = VALUE(sprache||.text0)
"guilock text="text1
IF ~EXISTS(RCVFile.main||zpPort) THEN ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
ADDRESS COMMAND Verteiler.main 'DB='Database,
'INTO='RCVFILE.main||zpPort,
'PB='zpPort
IF (RC) ~= 0 THEN DO /* Fehler beim öffnen von Verteiler */
Text1 = VALUE(sprache||.text3); REQUESTNOTIFY Text1; EXIT
END; ELSE
IF ~EXISTS(RCVFile.main||zpPort) THEN DO
Text1 = VALUE(sprache||.text4); REQUESTNOTIFY Text1
EXIT; END
MESSAGEINFO POSITION /* an der wievielten Position befindet sich die
MailPosition=RESULT Originalnachricht ? */
/* handelt es sich bei der Nachricht um eine Binär- oder Textdatei ? */
MESSAGEINFO TYPE
NachrichtenTyp=RESULT
IF NachrichtenTyp = 'BINARY' THEN DO
CALL _SaveMessageBody
ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
EXIT
END
SAVEMESSAGEASIS Datei.tmp||zpPort
IF (RC) == 0 THEN DO /* Konnte Nachricht gespeichert werden ? */
Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1;EXIT
END
CALL OPEN(Datei,Datei.tmp||zpPort,Read)
/******************************************
* hier wird eine Textdatei durchgescannt *
******************************************/
/* Es wird nach Empfänger, Betreff, Diskussion in, PGP-Signatur und
Empfangsbestätigung gesucht. Es wird lediglich bis zum Textkörper
durchsucht */
MESSAGEINFO RECEIVER
ReceiverName=RESULT
MESSAGEINFO FULLSUBJECT
SubjectName=RESULT
DO WHILE ~ABBREV(InString,HeaderEnd)
InString = READLN(Datei)
IF ABBREV(InString,Diskussion) ~= 0 THEN DO
FollowupName=DELSTR(InString,1,14) /* "Diskussion in: " entfernen! */
Laenge=WORDLENGTH(FollowupName,1)
FollowUpname=DELSTR(FollowupName,Laenge,1)
wopts = wopts||Space||'FOLLOWUP '||Anf||FollowUpName||Anf
END
IF ABBREV(InString,Empfangsbest) ~= 0 THEN DO /* Empfangsbestätigung? */
wopts = wopts||Space||'CONFIRM'
END
IF ABBREV(InString,PGPSIGNATUR) ~= 0 THEN DO /* PGP Signatur ? */
wopts = wopts||Space||'PGPSIG'
END
END
CALL CLOSE(Datei); ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
_SaveMessageBody:
SAVEMESSAGEBODY Datei.tmp||zpPort
IF (RC) == 0 THEN DO
Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1
EXIT; END
guilock off
/* Binärnachricht wird hier versendet */
IF NachrichtenTyp == 'BINARY' THEN DO
MESSAGEINFO RECEIVER
ReceiverName=RESULT
MESSAGEINFO FULLSUBJECT
SubjectName=RESULT
WRITEMESSAGE Datei.tmp||zpPort,
'RECEIVER' ReceiverName,
'SUBJECT' Anf||SubjectName||Anf,
'RCVFILE' RCVFILE.main||zpPort,
'BINARY',
wopts
END
ELSE
/* Textnachricht wird hier versendet */
WRITEMESSAGE Datei.tmp||zpPort,
'RECEIVER' ReceiverName,
'SUBJECT' Anf||SubjectName||Anf,
'RCVFILE' RCVFILE.main||zpPort,
wopts
id = RESULT
IF (id = '') THEN DO /* Hups! Fehler! */
Text1 = VALUE(sprache||.text6); REQUESTNOTIFY Text1
CALL _DeleteTemps
END
ELSE /* Alles klar! */
Text1 = VALUE(sprache||.text7); REQUESTNOTIFY Text1
IF DelImmer ~= 0 THEN
DO /* Soll die Nachricht gelöscht werden ? */
Text1 = VALUE(sprache||.text8); REQUESTRESPONSE Text1
END
IF RC = 1 THEN
DO
JUMPTOMESSAGE MailPosition; DELETE ONE; DOWN
_DeleteTemps:
ADDRESS COMMAND 'delete' RCVFILE.main||zpPort '>NIL:'
ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
EXIT
END
/* Urmail soll behalten werden. Trotzdem müssen wir die Files löschen */
CALL _DeleteTemps
/* EOS */